% !Mode:: "TeX:UTF-8"

\chapter{项目特色}

\section{JWT认证}
基于用户安全性考虑，欲将用户之间的数据访问隔离，故引入JWT验证技术。该技术使用自定义的密钥生成与用户id强相关的token作为登陆身份验证凭证。接口访问时需携带和当前登陆用户状态一致的token，才能有权限获取后端信息资源。
\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.9\textwidth]{JWT}
    \vspace{-2.0em}
    \caption{JWT验证}\label{fig:JWT}
    \vspace{-2.0em}
    \vspace{\baselineskip}
    \end{figure}

\section{引入HTTPS协议}
为进一步加强网络传输的安全性，引入HTTPS协议。由于HTTPS协议证书购买需要一定资金，所以该实践拟自签名证书。先由本地keytool生成子签名证书再倒入JDK信任库以及本机信任库。再在项目配置文件如application.yml以及bootstrap.yml中配置即可使用自定义的证书完成HTTPS协议实现。
\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.6\textwidth]{https2}
    \vspace{-2.0em}
    \caption{HTTPS配置}\label{fig:https2}
    \vspace{-2.0em}
    \vspace{\baselineskip}
    \end{figure}

    \begin{figure}[htbp]
        \centering
        \vspace{-2.0em}
        \includegraphics[width=1.10\textwidth]{https1}
        \vspace{-2.0em}
        \caption{HTTPS实现}\label{fig:https1}
        \vspace{-2.0em}
        \vspace{\baselineskip}
        \end{figure}

        \section{IP地址绑定域名}
        为了将整体项目能够部署到公网上供其他用户或组织访问，所以使用ngrok工具将本机IP端口绑定到域名上。由于ngrok使用HTTPS协议连接本机端口需要比较高昂的成本，所以在ngrok服务器到本机这一段的连接使用HTTP协议。为了增强ngrok服务器到本机这段的安全性，使用vpn将整个过程进行加密保护，从而间接的降低成本。
        \begin{figure}[htbp]
            \centering
            \vspace{-2.0em}
            \includegraphics[width=0.9\textwidth]{ngrok}
            \vspace{-2.0em}
            \caption{ngrok连接成功图}\label{fig:ngrok}
            \vspace{-2.0em}
            \vspace{\baselineskip}
            \end{figure}
\section{分布式数据库}
分布式数据库以及IP 地址绑定域名：将其中一台本机数据库配置为主数据库并授权从数据库，同样从数据库配置主数据库信息，最后形成连接。由于从数据库中配置的主数据库IP地址，可能由于主数据库所在机器的地理位置的改变导致IP的更换，所以进一步使用ngrok进行IP地址和域名的绑定，最后使得从数据库能稳定地访问主数据库的数据。
\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.7\textwidth]{sql}
    \vspace{-2.0em}
    \caption{主数据库的配置}\label{fig:sql}
    \vspace{-2.0em}
    \vspace{\baselineskip}
    \end{figure}

    ~
    
    \begin{figure}[htbp]
        \centering
        \vspace{-2.0em}
        \includegraphics[width=0.7\textwidth]{sql2}
        \vspace{-2.0em}
        \caption{从数据库的配置}\label{fig:sql2}
        \vspace{-2.0em}
        \vspace{\baselineskip}
        \end{figure}




